home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 32 / Amiga Format AFCD32 (Nov 1998, Issue 117).iso / -seriously_amiga- / programming / c / mesa-2.6 / include / gl / glu.h < prev    next >
C/C++ Source or Header  |  1998-08-10  |  17KB  |  417 lines

  1. /* $Id: glu.h,v 1.9 1998/01/16 02:29:26 brianp Exp $ */
  2.  
  3. /*
  4.  * Mesa 3-D graphics library
  5.  * Version:  2.6
  6.  * Copyright (C) 1995-1997  Brian Paul
  7.  *
  8.  * This library is free software; you can redistribute it and/or
  9.  * modify it under the terms of the GNU Library General Public
  10.  * License as published by the Free Software Foundation; either
  11.  * version 2 of the License, or (at your option) any later version.
  12.  *
  13.  * This library is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16.  * Library General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU Library General Public
  19.  * License along with this library; if not, write to the Free
  20.  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  */
  22.  
  23.  
  24. /*
  25.  * glu.h
  26.  *
  27.  * Version 1.0  27 Jun 1998
  28.  * by Jarno van der Linden
  29.  * jarno@kcbbs.gen.nz
  30.  *
  31.  * File created from glu.h ver 1.9 using GenProtos
  32.  *
  33.  */
  34.  
  35.  
  36. #ifndef GLU_H
  37. #define GLU_H
  38.  
  39.  
  40. #if defined(USE_MGL_NAMESPACE)
  41. #include "glu_mangle.h"
  42. #endif
  43.  
  44.  
  45. #ifdef __cplusplus
  46. extern "C" {
  47. #endif
  48.  
  49. #ifdef AMIGA
  50. #ifndef MAKE_AMIGALIB
  51. #include "pragmas/glu_pragmas.h"
  52. #endif
  53. #endif
  54.  
  55. #include "GL/gl.h"
  56.  
  57.  
  58. #ifdef macintosh
  59.     #pragma enumsalwaysint on
  60.     #if PRAGMA_IMPORT_SUPPORTED
  61.     #pragma import on
  62.     #endif
  63. #endif
  64.  
  65.  
  66. #define GLU_VERSION_1_1        1
  67.  
  68.  
  69. #define GLU_TRUE   GL_TRUE
  70. #define GLU_FALSE  GL_FALSE
  71.  
  72.  
  73. enum {
  74.     /* Normal vectors */
  75.     GLU_SMOOTH    = 100000,
  76.     GLU_FLAT    = 100001,
  77.     GLU_NONE    = 100002,
  78.  
  79.     /* Quadric draw styles */
  80.     GLU_POINT    = 100010,
  81.     GLU_LINE    = 100011,
  82.     GLU_FILL    = 100012,
  83.     GLU_SILHOUETTE    = 100013,
  84.  
  85.     /* Quadric orientation */
  86.     GLU_OUTSIDE    = 100020,
  87.     GLU_INSIDE    = 100021,
  88.  
  89.     /* Tesselator */
  90.     GLU_BEGIN    = 100100,
  91.     GLU_VERTEX    = 100101,
  92.     GLU_END        = 100102,
  93.     GLU_ERROR    = 100103,
  94.     GLU_EDGE_FLAG    = 100104,
  95.  
  96.     /* Contour types */
  97.     GLU_CW        = 100120,
  98.     GLU_CCW        = 100121,
  99.     GLU_INTERIOR    = 100122,
  100.     GLU_EXTERIOR    = 100123,
  101.     GLU_UNKNOWN    = 100124,
  102.  
  103.     /* Tesselation errors */
  104.     GLU_TESS_ERROR1    = 100151,  /* missing gluEndPolygon */
  105.     GLU_TESS_ERROR2 = 100152,  /* missing gluBeginPolygon */
  106.     GLU_TESS_ERROR3 = 100153,  /* misoriented contour */
  107.     GLU_TESS_ERROR4 = 100154,  /* vertex/edge intersection */
  108.     GLU_TESS_ERROR5 = 100155,  /* misoriented or self-intersecting loops */
  109.     GLU_TESS_ERROR6 = 100156,  /* coincident vertices */
  110.     GLU_TESS_ERROR7 = 100157,  /* all vertices collinear */
  111.     GLU_TESS_ERROR8 = 100158,  /* intersecting edges */
  112.     GLU_TESS_ERROR9 = 100159,  /* not coplanar contours */
  113.  
  114.     /* NURBS */
  115.     GLU_AUTO_LOAD_MATRIX    = 100200,
  116.     GLU_CULLING        = 100201,
  117.     GLU_PARAMETRIC_TOLERANCE= 100202,
  118.     GLU_SAMPLING_TOLERANCE    = 100203,
  119.     GLU_DISPLAY_MODE    = 100204,
  120.     GLU_SAMPLING_METHOD    = 100205,
  121.     GLU_U_STEP        = 100206,
  122.     GLU_V_STEP        = 100207,
  123.  
  124.     GLU_PATH_LENGTH        = 100215,
  125.     GLU_PARAMETRIC_ERROR    = 100216,
  126.     GLU_DOMAIN_DISTANCE    = 100217,
  127.  
  128.     GLU_MAP1_TRIM_2        = 100210,
  129.     GLU_MAP1_TRIM_3        = 100211,
  130.  
  131.     GLU_OUTLINE_POLYGON    = 100240,
  132.     GLU_OUTLINE_PATCH    = 100241,
  133.  
  134.     GLU_NURBS_ERROR1  = 100251,   /* spline order un-supported */
  135.     GLU_NURBS_ERROR2  = 100252,   /* too few knots */
  136.     GLU_NURBS_ERROR3  = 100253,   /* valid knot range is empty */
  137.     GLU_NURBS_ERROR4  = 100254,   /* decreasing knot sequence */
  138.     GLU_NURBS_ERROR5  = 100255,   /* knot multiplicity > spline order */
  139.     GLU_NURBS_ERROR6  = 100256,   /* endcurve() must follow bgncurve() */
  140.     GLU_NURBS_ERROR7  = 100257,   /* bgncurve() must precede endcurve() */
  141.     GLU_NURBS_ERROR8  = 100258,   /* ctrlarray or knot vector is NULL */
  142.     GLU_NURBS_ERROR9  = 100259,   /* can't draw pwlcurves */
  143.     GLU_NURBS_ERROR10 = 100260,   /* missing gluNurbsCurve() */
  144.     GLU_NURBS_ERROR11 = 100261,   /* missing gluNurbsSurface() */
  145.     GLU_NURBS_ERROR12 = 100262,   /* endtrim() must precede endsurface() */
  146.     GLU_NURBS_ERROR13 = 100263,   /* bgnsurface() must precede endsurface() */
  147.     GLU_NURBS_ERROR14 = 100264,   /* curve of improper type passed as trim curve */
  148.     GLU_NURBS_ERROR15 = 100265,   /* bgnsurface() must precede bgntrim() */
  149.     GLU_NURBS_ERROR16 = 100266,   /* endtrim() must follow bgntrim() */
  150.     GLU_NURBS_ERROR17 = 100267,   /* bgntrim() must precede endtrim()*/
  151.     GLU_NURBS_ERROR18 = 100268,   /* invalid or missing trim curve*/
  152.     GLU_NURBS_ERROR19 = 100269,   /* bgntrim() must precede pwlcurve() */
  153.     GLU_NURBS_ERROR20 = 100270,   /* pwlcurve referenced twice*/
  154.     GLU_NURBS_ERROR21 = 100271,   /* pwlcurve and nurbscurve mixed */
  155.     GLU_NURBS_ERROR22 = 100272,   /* improper usage of trim data type */
  156.     GLU_NURBS_ERROR23 = 100273,   /* nurbscurve referenced twice */
  157.     GLU_NURBS_ERROR24 = 100274,   /* nurbscurve and pwlcurve mixed */
  158.     GLU_NURBS_ERROR25 = 100275,   /* nurbssurface referenced twice */
  159.     GLU_NURBS_ERROR26 = 100276,   /* invalid property */
  160.     GLU_NURBS_ERROR27 = 100277,   /* endsurface() must follow bgnsurface() */
  161.     GLU_NURBS_ERROR28 = 100278,   /* intersecting or misoriented trim curves */
  162.     GLU_NURBS_ERROR29 = 100279,   /* intersecting trim curves */
  163.     GLU_NURBS_ERROR30 = 100280,   /* UNUSED */
  164.     GLU_NURBS_ERROR31 = 100281,   /* unconnected trim curves */
  165.     GLU_NURBS_ERROR32 = 100282,   /* unknown knot error */
  166.     GLU_NURBS_ERROR33 = 100283,   /* negative vertex count encountered */
  167.     GLU_NURBS_ERROR34 = 100284,   /* negative byte-stride */
  168.     GLU_NURBS_ERROR35 = 100285,   /* unknown type descriptor */
  169.     GLU_NURBS_ERROR36 = 100286,   /* null control point reference */
  170.     GLU_NURBS_ERROR37 = 100287,   /* duplicate point on pwlcurve */
  171.  
  172.     /* Errors */
  173.     GLU_INVALID_ENUM        = 100900,
  174.     GLU_INVALID_VALUE        = 100901,
  175.     GLU_OUT_OF_MEMORY        = 100902,
  176.     GLU_INCOMPATIBLE_GL_VERSION    = 100903,
  177.  
  178.     /* New in GLU 1.1 */
  179.     GLU_VERSION    = 100800,
  180.     GLU_EXTENSIONS    = 100801
  181. };
  182.  
  183.  
  184. /*
  185.  * These are the GLU 1.1 typedefs.  GLU 1.2 has different ones!
  186.  */
  187. typedef struct GLUquadricObj GLUquadricObj;
  188.  
  189. typedef struct GLUtriangulatorObj GLUtriangulatorObj;
  190.  
  191. typedef struct GLUnurbsObj GLUnurbsObj;
  192.  
  193.  
  194.  
  195. #if defined(__BEOS__) || defined(__QUICKDRAW__)
  196. #pragma export on
  197. #endif
  198.  
  199.  
  200. /*
  201.  *
  202.  * Miscellaneous functions
  203.  *
  204.  */
  205.  
  206. extern __saveds void APIENTRY gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez,
  207.                                          GLdouble centerx, GLdouble centery,
  208.                                          GLdouble centerz,
  209.                                          GLdouble upx, GLdouble upy, GLdouble upz );
  210.  
  211.  
  212. extern __asm __saveds void APIENTRY gluOrtho2D( register __fp0 GLdouble left, register __fp1 GLdouble right,
  213.                                                 register __fp2 GLdouble bottom, register __fp3 GLdouble top );
  214.  
  215.  
  216. extern __asm __saveds void APIENTRY gluPerspective( register __fp0 GLdouble fovy, register __fp1 GLdouble aspect,
  217.                                                     register __fp2 GLdouble zNear, register __fp3 GLdouble zFar );
  218.  
  219.  
  220. extern __asm __saveds void APIENTRY gluPickMatrix( register __fp0 GLdouble x, register __fp1 GLdouble y,
  221.                                                    register __fp2 GLdouble width, register __fp3 GLdouble height,
  222.                                                    register __a0 const GLint viewport[4] );
  223.  
  224. extern __asm __saveds GLint APIENTRY gluProject( register __fp0 GLdouble objx, register __fp1 GLdouble objy, register __fp2 GLdouble objz,
  225.                                                  register __a0 const GLdouble modelMatrix[16],
  226.                                                  register __a1 const GLdouble projMatrix[16],
  227.                                                  register __a2 const GLint viewport[4],
  228.                                                  register __a3 GLdouble *winx, register __a4 GLdouble *winy,
  229.                                                  register __a5 GLdouble *winz );
  230.  
  231. extern __asm __saveds GLint APIENTRY gluUnProject( register __fp0 GLdouble winx, register __fp1 GLdouble winy,
  232.                                                    register __fp2 GLdouble winz,
  233.                                                    register __a0 const GLdouble modelMatrix[16],
  234.                                                    register __a1 const GLdouble projMatrix[16],
  235.                                                    register __a2 const GLint viewport[4],
  236.                                                    register __a3 GLdouble *objx, register __a4 GLdouble *objy,
  237.                                                    register __a5 GLdouble *objz );
  238.  
  239. extern __asm __saveds const GLubyte* APIENTRY gluErrorString( register __d0 GLenum errorCode );
  240.  
  241.  
  242.  
  243. /*
  244.  *
  245.  * Mipmapping and image scaling
  246.  *
  247.  */
  248.  
  249. extern __asm __saveds GLint APIENTRY gluScaleImage( register __d0 GLenum format,
  250.                                                     register __d1 GLint widthin, register __d2 GLint heightin,
  251.                                                     register __d3 GLenum typein, register __a0 const void *datain,
  252.                                                     register __d4 GLint widthout, register __d5 GLint heightout,
  253.                                                     register __d6 GLenum typeout, register __a1 void *dataout );
  254.  
  255. extern __asm __saveds GLint APIENTRY gluBuild1DMipmaps( register __d0 GLenum target, register __d1 GLint components,
  256.                                                         register __d2 GLint width, register __d3 GLenum format,
  257.                                                         register __d4 GLenum type, register __a0 const void *data );
  258.  
  259. extern __asm __saveds GLint APIENTRY gluBuild2DMipmaps( register __d0 GLenum target, register __d1 GLint components,
  260.                                                         register __d2 GLint width, register __d3 GLint height,
  261.                                                         register __d4 GLenum format,
  262.                                                         register __d5 GLenum type, register __a0 const void *data );
  263.  
  264.  
  265.  
  266. /*
  267.  *
  268.  * Quadrics
  269.  *
  270.  */
  271.  
  272. extern __asm __saveds GLUquadricObj* APIENTRY gluNewQuadric( void );
  273.  
  274. extern __asm __saveds void APIENTRY gluDeleteQuadric( register __a0 GLUquadricObj *state );
  275.  
  276. extern __asm __saveds void APIENTRY gluQuadricDrawStyle( register __a0 GLUquadricObj *quadObject,
  277.                                                          register __d0 GLenum drawStyle );
  278.  
  279. extern __asm __saveds void APIENTRY gluQuadricOrientation( register __a0 GLUquadricObj *quadObject,
  280.                                                            register __d0 GLenum orientation );
  281.  
  282. extern __asm __saveds void APIENTRY gluQuadricNormals( register __a0 GLUquadricObj *quadObject,
  283.                                                        register __d0 GLenum normals );
  284.  
  285. extern __asm __saveds void APIENTRY gluQuadricTexture( register __a0 GLUquadricObj *quadObject,
  286.                                                        register __d0 GLboolean textureCoords );
  287.  
  288. extern __asm __saveds void APIENTRY gluQuadricCallback( register __a0 GLUquadricObj *qobj,
  289.                                                         register __d0 GLenum which, register __a1 void (CALLBACK *fn)() );
  290.  
  291. extern __asm __saveds void APIENTRY gluCylinder( register __a0 GLUquadricObj *qobj,
  292.                                                  register __fp0 GLdouble baseRadius,
  293.                                                  register __fp1 GLdouble topRadius,
  294.                                                  register __fp2 GLdouble height,
  295.                                                  register __d0 GLint slices, register __d1 GLint stacks );
  296.  
  297. extern __asm __saveds void APIENTRY gluSphere( register __a0 GLUquadricObj *qobj,
  298.                                                register __fp0 GLdouble radius, register __d0 GLint slices, register __d1 GLint stacks );
  299.  
  300. extern __asm __saveds void APIENTRY gluDisk( register __a0 GLUquadricObj *qobj,
  301.                                              register __fp0 GLdouble innerRadius, register __fp1 GLdouble outerRadius,
  302.                                              register __d0 GLint slices, register __d1 GLint loops );
  303.  
  304. extern __asm __saveds void APIENTRY gluPartialDisk( register __a0 GLUquadricObj *qobj, register __fp0 GLdouble innerRadius,
  305.                                                     register __fp1 GLdouble outerRadius, register __d0 GLint slices,
  306.                                                     register __d1 GLint loops, register __fp2 GLdouble startAngle,
  307.                                                     register __fp3 GLdouble sweepAngle );
  308.  
  309.  
  310.  
  311. /*
  312.  *
  313.  * Nurbs
  314.  *
  315.  */
  316.  
  317. extern __asm __saveds GLUnurbsObj* APIENTRY gluNewNurbsRenderer( void );
  318.  
  319. extern __asm __saveds void APIENTRY gluDeleteNurbsRenderer( register __a0 GLUnurbsObj *nobj );
  320.  
  321. extern __asm __saveds void APIENTRY gluLoadSamplingMatrices( register __a0 GLUnurbsObj *nobj,
  322.                                                              register __a1 const GLfloat modelMatrix[16],
  323.                                                              register __a2 const GLfloat projMatrix[16],
  324.                                                              register __a3 const GLint viewport[4] );
  325.  
  326. extern __asm __saveds void APIENTRY gluNurbsProperty( register __a0 GLUnurbsObj *nobj, register __d0 GLenum property,
  327.                                                       register __fp0 GLfloat value );
  328.  
  329. extern __asm __saveds void APIENTRY gluGetNurbsProperty( register __a0 GLUnurbsObj *nobj, register __d0 GLenum property,
  330.                                                          register __a1 GLfloat *value );
  331.  
  332. extern __asm __saveds void APIENTRY gluBeginCurve( register __a0 GLUnurbsObj *nobj );
  333.  
  334. extern __asm __saveds void APIENTRY gluEndCurve( register __a0 GLUnurbsObj * nobj );
  335.  
  336. extern __asm __saveds void APIENTRY gluNurbsCurve( register __a0 GLUnurbsObj *nobj, register __d0 GLint nknots,
  337.                                                    register __a1 GLfloat *knot, register __d1 GLint stride,
  338.                                                    register __a2 GLfloat *ctlarray, register __d2 GLint order,
  339.                                                    register __d3 GLenum type );
  340.  
  341. extern __asm __saveds void APIENTRY gluBeginSurface( register __a0 GLUnurbsObj *nobj );
  342.  
  343. extern __asm __saveds void APIENTRY gluEndSurface( register __a0 GLUnurbsObj * nobj );
  344.  
  345. extern __asm __saveds void APIENTRY gluNurbsSurface( register __a0 GLUnurbsObj *nobj,
  346.                                                      register __d0 GLint sknot_count, register __a1 GLfloat *sknot,
  347.                                                      register __d1 GLint tknot_count, register __a2 GLfloat *tknot,
  348.                                                      register __d2 GLint s_stride, register __d3 GLint t_stride,
  349.                                                      register __a3 GLfloat *ctlarray,
  350.                                                      register __d4 GLint sorder, register __d5 GLint torder,
  351.                                                      register __d6 GLenum type );
  352.  
  353. extern __asm __saveds void APIENTRY gluBeginTrim( register __a0 GLUnurbsObj *nobj );
  354.  
  355. extern __asm __saveds void APIENTRY gluEndTrim( register __a0 GLUnurbsObj *nobj );
  356.  
  357. extern __asm __saveds void APIENTRY gluPwlCurve( register __a0 GLUnurbsObj *nobj, register __d0 GLint count,
  358.                                                  register __a1 GLfloat *array, register __d1 GLint stride, register __d2 GLenum type );
  359.  
  360. extern __asm __saveds void APIENTRY gluNurbsCallback( register __a0 GLUnurbsObj *nobj, register __d0 GLenum which,
  361.                                                       register __a1 void (CALLBACK *fn)() );
  362.  
  363.  
  364.  
  365. /*
  366.  *
  367.  * Polygon tesselation
  368.  *
  369.  */
  370.  
  371. extern __asm __saveds GLUtriangulatorObj* APIENTRY gluNewTess( void );
  372.  
  373. extern __asm __saveds void APIENTRY gluTessCallback( register __a0 GLUtriangulatorObj *tobj, register __d0 GLenum which,
  374.                                                      register __a1 void (CALLBACK *fn)() );
  375.  
  376. extern __asm __saveds void APIENTRY gluDeleteTess( register __a0 GLUtriangulatorObj *tobj );
  377.  
  378. extern __asm __saveds void APIENTRY gluBeginPolygon( register __a0 GLUtriangulatorObj *tobj );
  379.  
  380. extern __asm __saveds void APIENTRY gluEndPolygon( register __a0 GLUtriangulatorObj *tobj );
  381.  
  382. extern __asm __saveds void APIENTRY gluNextContour( register __a0 GLUtriangulatorObj *tobj, register __d0 GLenum type );
  383.  
  384. extern __asm __saveds void APIENTRY gluTessVertex( register __a0 GLUtriangulatorObj *tobj, register __a1 GLdouble v[3],
  385.                                                    register __a2 void *data );
  386.  
  387.  
  388.  
  389. /*
  390.  *
  391.  * New functions in GLU 1.1
  392.  *
  393.  */
  394.  
  395. extern __asm __saveds const GLubyte* APIENTRY gluGetString( register __d0 GLenum name );
  396.  
  397.  
  398. #if defined(__BEOS__) || defined(__QUICKDRAW__)
  399. #pragma export off
  400. #endif
  401.  
  402.  
  403. #ifdef macintosh
  404.     #pragma enumsalwaysint reset
  405.     #if PRAGMA_IMPORT_SUPPORTED
  406.     #pragma import off
  407.     #endif
  408. #endif
  409.  
  410.  
  411. #ifdef __cplusplus
  412. }
  413. #endif
  414.  
  415.  
  416. #endif
  417.